package com.bestcem.xm.user.service;

import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.user.service.dto.PageResponseDTO;
import com.bestcem.xm.user.service.dto.group.UserGroupExportRecordDTO;

import java.util.List;

/**
 * 层级组织导出service
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/4/19 17:57
 */
public interface UserGroupExportRecordService {

    /**
     * 通过条件统计组织导出记录
     *
     * @param exportRecordDTO 组织导出记录dto
     * @return ServiceResult<Long>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 10:25
     */
    ServiceResult<Long> countByCondition(UserGroupExportRecordDTO exportRecordDTO);

    /**
     * 创建组织导出记录
     *
     * @param exportRecordDTO 组织导出记录dto
     * @return ServiceResult<String>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 10:21
     */
    ServiceResult<String> insert(UserGroupExportRecordDTO exportRecordDTO);

    /**
     * 通过公司id和导出记录id更新组织导出记录
     *
     * @param exportRecordDTO 组织导出记录dto
     * @return ServiceResult<Integer>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 13:44
     */
    ServiceResult<Integer> updateByIdAndOrgId(UserGroupExportRecordDTO exportRecordDTO);

    /**
     * 更新组织导出状态
     *
     * @param orgId    公司id
     * @param exportId 组织导入记录id
     * @param status   组织导入记录状态
     * @return ServiceResult<Integer>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 13:42
     */
    ServiceResult<Integer> updateStatus(String orgId, String exportId, Integer status);

    /**
     * 导入组织记录分页列表
     *
     * @param exportRecordDTO 组织导出记录dto
     * @param currentPage     当前页
     * @param pageSize        页条数
     * @return ServiceResult<PageDTO < UserGroupExportRecordDTO>>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 15:44
     */
    ServiceResult<PageResponseDTO<UserGroupExportRecordDTO>> listByPage(UserGroupExportRecordDTO exportRecordDTO, Integer currentPage, Integer pageSize);

    /**
     * 根据条件查询导入组织记录
     *
     * @param exportRecordDTO
     * @return ServiceResult<List < UserGroupExportRecordDTO>>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/7/12 16:15
     */
    ServiceResult<List<UserGroupExportRecordDTO>> findByCondition(UserGroupExportRecordDTO exportRecordDTO);
}
